<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
           "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<meta name="GENERATOR" content="TtHgold 4.00">
 <style type="text/css"> div.p { margin-top: 7pt;}</style>
 <style type="text/css"><!--
 td div.comp { margin-top: -0.6ex; margin-bottom: -1ex;}
 td div.comb { margin-top: -0.6ex; margin-bottom: -.6ex;}
 td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex;}
 td div.norm {line-height:normal;}
 span.roman {font-family: serif; font-style: normal; font-weight: normal;} 
 span.overacc2 {position: relative;  left: .8em; top: -1.2ex;}
 span.overacc1 {position: relative;  left: .6em; top: -1.2ex;} --></style>
 
            
<title>hyperref</title>

<div class="p"><!----></div>
hyperref

<div class="p"><!----></div>
	 


	[0][0]	
<title>{Software Design Description for Siberia CMS}</title>
    
<h1 align="center"><b>Software Design Description for Siberia CMS</b> </h1>

<h3 align="center"><b>Siberia Software</b><br />
        Nikita Byalsky<br />
Bjorn Carandang<br />
Steve Cornella<br />
Alex Ivanov<br />
Ryan Ross
	 </h3>

<h3 align="center">Feb 05, 2011
<br />Revision 1 </h3>



<div class="p"><!----></div>
	

<h2>Revision History</h2>
    
<div class="p"><!----></div>
<br /><br />    
<center>	    
<table>
<tr><td align="left"> <b>Date            </td><td align="left"><b>Description               </td><td align="left"><b>Revision</td></tr><tr><td></td></tr>
<tr><td align="left"> Feb 05, 2011
</td><td align="left">Submitted for Initial Review </td><td align="left">0</td></tr></b></b></b></table>

    </center>


<div class="p"><!----></div>

<div class="p"><!----></div>



<div class="p"><!----></div>
 <h2><a name="tth_sEc1">
1</a>&nbsp;&nbsp;Introduction</h2><a name="Introduction">
</a>

     <h3><a name="tth_sEc1.1">
1.1</a>&nbsp;&nbsp;Purpose</h3><a name="DocumentPurpose">
</a>
This document defines the architecture, overall design, and individual components of the Siberia Content Management System ("Siberia CMS"). The details of this document are used by the development team to implement the features described in the Siberia CMS Software Requirements Document. Outsiders may use this document to understand design rationale and perform maintenance on the software as necessary.

     <h3><a name="tth_sEc1.2">
1.2</a>&nbsp;&nbsp;Scope</h3>
This document describes the design for the Siberia CMS software. It is a technical document intended for developers, present and future, of said software. It is used to guide initial implementation and further extension/maintenance. It describes the necessary components that comprise the Siberia CMS, and specify the manner in which it satisfies all of the functional and some of the nonfunctional requirements laid out in the Siberia CMS Sofware Requirements Document.
<div class="p"><!----></div>
 
Design objectives and the flow of events from user access to objective completion are described in the Design Overview. Detailed explanations for specific subsystems are supplied in the Detailed Design, Display, and Data Layer sections.



 <h2><a name="tth_sEc2">
2</a>&nbsp;&nbsp;Design Guidelines</h2>

     <h3><a name="tth_sEc2.1">
2.1</a>&nbsp;&nbsp;Design Goals</h3><a name="Design Goals">
</a>
Traditional CMSs are powerful technology solutions, but they often fall short and end up satisfying two distinct design extremes:

<dl compact="compact">
 <dt><b>User-Friendly, Feature-limited</b></dt>
	<dd>These CMSes rely extensively on user-friendly interfaces, but are limited to their basic functionality without significant modification. Canonical examples include WordPress and nopCommerce.</dd>
 <dt><b>Feature-Unlimited, User-Unfriendly</b></dt>
	<dd>These CMSes are very feature-rich, with extensive libraries and utilities that can be utilized by the user. However, the majority of essential features apply only to the specific CMS environment, and are nontrivial to learn how to apply at best. Canonical examples include SiteCore and Drupal.</dd>
</dl>
We are attempting to shatter the myth that a CMS has to be an either-or proposition: Our software is designed to be extensible and easy to use.

<dl compact="compact">
 <dt><b>Web-based Administration</b></dt>
	<dd>A staple of any CMS software, being able to administer via a Web interface provides twofold benefits: Graphically-oriented users as well as users geographically seperated from the server can use convenient administrative features, or supply intellectual assets remotely.</dd>
 <dt><b>Plugin Architecture</b></dt>
	<dd>The ability to add and remove functionality at ease is common across many CMSes, but sites are defined not just by style, but by the variety and functionality a wide variety of well-supported plugins supply.</dd>
 <dt><b>Open API</b></dt>
	<dd>When a need arises, developers harness existing features of the CMS to implement further functionality, in the form of new plugins.</dd>
</dl>

     <h3><a name="tth_sEc2.2">
2.2</a>&nbsp;&nbsp;Technologies Used</h3><a name="TechnologiesUsed">
</a>We are designing this software to utilize the .NET Framework, and be used in conjunction with a web server that supports ASP.NET/C#. In addition, any data storage medium that can be abstracted through our data layer will be supported, either in our initial release or through future community development efforts.



 <h2><a name="tth_sEc3">
3</a>&nbsp;&nbsp;Design Overview</h2>
Figure  provides the general user-system flow that occurs when users interact with a Siberia CMS server. The CMS is intended to serve as a dynamic go-between, for creating user-viewable content as it is requested by said user.
<div class="p"><!----></div>
 
The web application Siberia CMS reviews the request, locates the content from the database and the design files on the server, processes the content and design into a webpage, and returns it to the user's web browser.
<div class="p"><!----></div>
 
The data layer (in this case an interface for an MS SQL Server database) receives a request for some data, which it locates and returns to Siberia CMS for further processing.

<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg1">
</a>   <center>    <a href="ContextDiagram.eps">Figure</a>
  
<center>Figure 1: A diagram outlining the main interaction flow between a user and a Siberia CMS server.</center>
<a name="fig:contextdiagram">
</a>
</center>
<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg2">
</a>   <center>    <a href="ArchitecturalDiagram.eps">Figure</a>
  
<center>Figure 2: A diagram outlining the relationships between the main systems of the CMS.</center>
<a name="fig:sysdiagram">
</a>
</center>
<div class="p"><!----></div>
Figure <a href="#fig:sysdiagram">2</a> shows the basic systems and the basic relationships between each system.

<dl compact="compact">
 <dt><b>Plugins</b></dt>
	<dd>Plugins add extra functionality to the CMS, as needed, while harnessing existing CMS functionality. They are added onto Siberia CMS as needed, to fufill that role.</dd>
 <dt><b>Display</b></dt>
	<dd>The Display Repository is simply an area in the server's filesystem known to the CMS that will contain any necessary information for the presentation layer.</dd>
 <dt><b>Data Layer</b></dt>
	<dd>Implementations of a data layer support the storage and retrieval of user content and system information.</dd>
</dl>


<div class="p"><!----></div>



 <h2><a name="tth_sEc4">
4</a>&nbsp;&nbsp;Display Management</h2>
The CMS provides a system for uniting content and data at runtime. Once a user makes a request for content from the CMS, the CMS manages the retrieval of seperate content and display entities, then unites them before presenting them to the user.The intended result is that template webpages are designed to be modular and easy to modify, so that more user effort is expended on actual content creation. Figure  expands on the procedure used to create CMS-served content.

<div class="p"><!----></div>
<a name="tth_fIg3">
</a>   <center>    <a href="DisplaySequenceDiagram.eps">Figure</a>
  
<center>Figure 3: A diagram outlining the steps involved in uniting content in a Display.</center>
<a name="fig:DisplayCMSConnection">
</a>
</center>
<div class="p"><!----></div>
Figure <a href="#fig:DisplayCMSConnection">3</a> describes the process that the CMS application executes when it recieves a request for displayable content:

<ol type="1">
<li> The CMS acquires the appliciable Display files from the local filesystem.
<div class="p"><!----></div>
</li>

<li> The CMS executes any business-layer and Data Layer method calls found in the aforementioned Display files.
<div class="p"><!----></div>
</li>

<li> The CMS unites output from the aforementioned method calls to the template HTML files.
<div class="p"><!----></div>
</li>

<li> The CMS returns the united Display and data as a Web Page to the user.
<div class="p"><!----></div>
</li>
</ol>
In this way the system fufills SRS Requirements 3.4.1, regarding the use of Displays as visual wrappers for Content.

     <h3><a name="tth_sEc4.1">
4.1</a>&nbsp;&nbsp;Data Representation of Displays</h3>
The Displays are stored in the filesystem as .ASPX files with special placeholders, along with conventional HTML and CSS.

<div class="p"><!----></div>
<a name="tth_fIg4">
</a> 	<center>		
<pre>
&lt;body&#62;
&nbsp;&nbsp;&nbsp;&lt;form&nbsp;id="form1"&nbsp;runat="server"&#62;
&nbsp;&nbsp;&nbsp;&lt;div&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Label&nbsp;ID="Label2"&nbsp;runat="server"&nbsp;Font-Size="XX-Large&nbsp;Text="RSS&nbsp;Plugin"&#62;&lt;/asp:Label&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:CMSLabelRSS&nbsp;ID="Label1"&nbsp;runat="server"&nbsp;Text="CMSLabel:&nbsp;RSS1"&#62;&lt;/asp:Label&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Button&nbsp;ID="Button1"&nbsp;runat="server"&nbsp;onclick="Button1_Click"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Text="Generate&nbsp;Latest&nbsp;Feed"&nbsp;Width="138px"&nbsp;/&#62;
&nbsp;&nbsp;&nbsp;&lt;/div&#62;
&nbsp;&nbsp;&nbsp;&lt;/form&#62;
&lt;/body&#62;
		
</pre>
	
<center>Figure 4: Code snippet demonstrating the CMSLabel functionality as a placeholder for Content.</center>
	<a name="code:exampleaspx">
</a>
</center>
<div class="p"><!----></div>
Because Displays are a collection of .ASPX files and other web markup files, they may be edited and modified in keeping with SRS Requirements 3.4.2, 3.4.3, and 3.4.4, regarding editing of Displays via CMS-hosted and user-preferred applications.



 <h2><a name="tth_sEc5">
5</a>&nbsp;&nbsp;Data Layer-CMS Interface</h2>
In order to interface with any database or data storage system an administrator dictates, Siberia CMS relies on an adapter-based system to access databases. In particular, the user selects an adapter to use for a specific database, and then specifies the connection details. In order to facilitate organized access of many popular database systems, the CMS provides various &#228;dapter" classes that site developers can use to communicate and store data.

<div class="p"><!----></div>
 
This flexible structure fufills SRS Requirement 3.5.1; the way we store data as described in Figure  fufills SRS Requirements 3.5.4 and 3.5.5. Our dependency on adapters as shown in Figure  fufills SRS Requirements 3.5.5 and 3.5.6.

<div class="p"><!----></div>
<a name="tth_fIg5">
</a>   <center>    <img src="DBCMSConnection.png" alt="DBCMSConnection.png" />
  
<center>Figure 5: A diagram outlining the intermediary classes between the CMS and any user-selected data storage method.</center>
<a name="fig:DBCMSConnection">
</a>
</center>
<div class="p"><!----></div>
 <h2><a name="tth_sEc6">
6</a>&nbsp;&nbsp;Application Programming Interface and Plugins</h2>
The Application Programming Interface ("API") below is available to the CMS and any attached plugins. It allows for standardized access to CMS functionality without providing undue access privileges to non-core CMS services.

<div class="p"><!----></div>
 
 This section details Priority 2 requirement 3.6.1 from the SRS, so they may or may not appear in preliminary releases of Siberia CMS. Additionally, the API detailed here may be expanded with additional functionality and implemented in the CMS, per Priority 2 requirement 3.6.2.

     <h3><a name="tth_sEc6.1">
6.1</a>&nbsp;&nbsp;User Management</h3>

      <h4><a name="tth_sEc6.1.1">
6.1.1</a>&nbsp;&nbsp;GetUser</h4>

<table border="1">
<tr><td colspan="2" align="center">GetUser(UID UserID) </td></tr>
<tr><td align="center">Input </td><td align="left">UserID A User's unique identifier. </td></tr>
<tr><td align="center">Output </td><td align="left">A reference to a User object that matches the unique identifier.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the User tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.2">
6.1.2</a>&nbsp;&nbsp;SetUser</h4>

<table border="1">
<tr><td colspan="2" align="center">SetUser(User User) </td></tr>
<tr><td align="center">Input </td><td align="left">User A reference to a User object. </td></tr>
<tr><td align="center">Output </td><td align="left">A boolean value specifying if the operation was successful.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the User tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.3">
6.1.3</a>&nbsp;&nbsp;GetUserType</h4>

<table border="1">
<tr><td colspan="2" align="center">GetUserType(UID UserTypeID) </td></tr>
<tr><td align="center">Input </td><td align="left">UserTypeID A User Type's unique identifier. </td></tr>
<tr><td align="center">Output </td><td align="left">A reference to a User Type object that matches the unique identifier.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the User Type tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.4">
6.1.4</a>&nbsp;&nbsp;SetUserType</h4>

<table border="1">
<tr><td colspan="2" align="center">SetUserType(UserType UserType) </td></tr>
<tr><td align="center">Input </td><td align="left">UserType A reference to a User Type object. </td></tr>
<tr><td align="center">Output </td><td align="left">A boolean value specifying if the operation was successful.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the User Type tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.5">
6.1.5</a>&nbsp;&nbsp;GetRole</h4>

<table border="1">
<tr><td colspan="2" align="center">GetRole(UID RoleID) </td></tr>
<tr><td align="center">Input </td><td align="left">RoleID: A Role's unique identifier. </td></tr>
<tr><td align="center">Output </td><td align="left">A reference to a Role object that matches the unique identifier.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the Role tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.6">
6.1.6</a>&nbsp;&nbsp;SetRole</h4>

<table border="1">
<tr><td colspan="2" align="center">SetRole(Role Role) </td></tr>
<tr><td align="center">Input </td><td align="left">Role A reference to a Role object. </td></tr>
<tr><td align="center">Output </td><td align="left">A boolean value specifying if the operation was successful.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the Role tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.7">
6.1.7</a>&nbsp;&nbsp;GetContent</h4>

<table border="1">
<tr><td colspan="2" align="center">GetContent(UID ContentID) </td></tr>
<tr><td align="center">Input </td><td align="left">ContentID: A Content's unique identifier. </td></tr>
<tr><td align="center">Output </td><td align="left">A reference to a Content object that matches the unique identifier.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the Content tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.8">
6.1.8</a>&nbsp;&nbsp;SetContent</h4>

<table border="1">
<tr><td colspan="2" align="center">SetContent(Content Content) </td></tr>
<tr><td align="center">Input </td><td align="left">Content A reference to a Content object. </td></tr>
<tr><td align="center">Output </td><td align="left">A boolean value specifying if the operation was successful.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the Content tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.9">
6.1.9</a>&nbsp;&nbsp;GetContentType</h4>

<table border="1">
<tr><td colspan="2" align="center">GetContentType(UID ContentTypeID) </td></tr>
<tr><td align="center">Input </td><td align="left">ContentTypeID: A Content Type's unique identifier. </td></tr>
<tr><td align="center">Output </td><td align="left">A reference to a Content Type object that matches the unique identifier.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the Content Type tables in the Data Layer.</td></tr></table>



      <h4><a name="tth_sEc6.1.10">
6.1.10</a>&nbsp;&nbsp;SetContentType</h4>

<table border="1">
<tr><td colspan="2" align="center">SetContentType(ContentType ContentType) </td></tr>
<tr><td align="center">Input </td><td align="left">ContentType A reference to a Content Type object. </td></tr>
<tr><td align="center">Output </td><td align="left">A boolean value specifying if the operation was successful.</td></tr>
<tr><td align="center">Description </td><td align="left">Interface for the Content Type tables in the Data Layer.</td></tr></table>





 <h2><a name="tth_sEc7">
7</a>&nbsp;&nbsp;Detailed Design</h2>

     <h3><a name="tth_sEc7.1">
7.1</a>&nbsp;&nbsp;Database Entities</h3>

<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg6">
</a>   <center>    <a href="DatabaseTableDiagram.eps">Figure</a>
  
<center>Figure 6: A diagram outlining the Content and Field table layout in the CMS' Data Layer.</center>
<a name="fig:DatabaseTableDiagram">
</a>
</center>
<div class="p"><!----></div>

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.1">
7.1.1</a>&nbsp;&nbsp;Content Type</h4>

<table border="1">
<tr><td colspan="3" align="center">Content Type </td></tr>
<tr><td align="center">Variable </td><td align="center">Type </td><td align="left">Description </td></tr>
<tr><td align="center">CTID </td><td align="center">UUID </td><td align="left">A unique identifier for the Content Type.</td></tr>
<tr><td align="center">value </td><td align="center">text </td><td align="left">An identifying name for the Content Type.</td></tr></table>



<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.2">
7.1.2</a>&nbsp;&nbsp;Field Type</h4>

<table border="1">
<tr><td colspan="3" align="center">Field Type </td></tr>
<tr><td align="center">Variable </td><td align="center">Type </td><td align="left">Description </td></tr>
<tr><td align="center">FTID </td><td align="center">UUID </td><td align="left">A unique identifier for the Field Type.</td></tr>
<tr><td align="center">value </td><td align="center">text </td><td align="left">An identifying name for the Content Type.</td></tr></table>



<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.3">
7.1.3</a>&nbsp;&nbsp;Field</h4>

<table border="1">
<tr><td colspan="3" align="center">Field </td></tr>
<tr><td align="center">Variable </td><td align="center">Type </td><td align="left">Description </td></tr>
<tr><td align="center">FID </td><td align="center">UUID </td><td align="left">A unique identifier for the Field.</td></tr>
<tr><td align="center">FTID </td><td align="center">Field Type </td><td align="left">A reference to the Field Type that this Field is derived from.</td></tr></table>



<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.4">
7.1.4</a>&nbsp;&nbsp;Field Value</h4>

<table border="1">
<tr><td colspan="3" align="center">Field Value </td></tr>
<tr><td align="center">Variable </td><td align="center">Type </td><td align="left">Description </td></tr>
<tr><td align="center">CID </td><td align="center">Content </td><td align="left">References to the Content that use this Field Value.</td></tr>
<tr><td align="center">value </td><td align="center">data </td><td align="left">Information contained by the Field Type.</td></tr>
<tr><td align="center">FID </td><td align="center">Field </td><td align="left">Reference to the Field that this Field Value is derived from. </td></tr></table>



<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.5">
7.1.5</a>&nbsp;&nbsp;Content</h4>

<table border="1">
<tr><td colspan="3" align="center">Content </td></tr>
<tr><td align="center">CID </td><td align="center">UID </td><td align="left">A unique identifier for the Content entity.</td></tr>
<tr><td align="center">CTID </td><td align="center">Content Type </td><td align="left">A reference to the Content Type that this Content is derived from. </td></tr></table>



<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg7">
</a>   <center>    <a href="UserRoleDataDiagram.eps">Figure</a>
  
<center>Figure 7: A diagram outlining the User and Role table layout in the CMS' Data Layer.</center>
<a name="fig:UserRoleDataDiagram">
</a>
</center>
<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.6">
7.1.6</a>&nbsp;&nbsp;Role</h4>

<table border="1">
<tr><td colspan="3" align="center">Role </td></tr>
<tr><td align="center">RID </td><td align="center">UID </td><td align="left">A unique identifier for the Role entity.</td></tr>
<tr><td align="center">Role </td><td align="center">String </td><td align="left">A reference to a Role defined in the CMS's business layer. </td></tr></table>



<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.7">
7.1.7</a>&nbsp;&nbsp;User</h4>

<table border="1">
<tr><td colspan="3" align="center">User </td></tr>
<tr><td align="center">USRID </td><td align="center">UID </td><td align="left">A unique identifier for the User entity.</td></tr>
<tr><td align="center">ID </td><td align="center">String </td><td align="left">A human-readable identifier for the User.</td></tr></table>



<div class="p"><!----></div>
      <h4><a name="tth_sEc7.1.8">
7.1.8</a>&nbsp;&nbsp;User-Role</h4>

<table border="1">
<tr><td colspan="3" align="center">User-Role </td></tr>
<tr><td align="center">USRID </td><td align="center">UID </td><td align="left">A reference to a User.</td></tr>
<tr><td align="center">RID </td><td align="center">UID </td><td align="left">A reference to a Role.</td></tr></table>



<div class="p"><!----></div>
     <h3><a name="tth_sEc7.2">
7.2</a>&nbsp;&nbsp;Class Design</h3>

<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg8">
</a>   <center>    <a href="UserClassDiagram.eps">Figure</a>
  
<center>Figure 8: A diagram outlining the relationships between Roles, Users, and User Types.</center>
<a name="fig:UserClassDiagram">
</a>
</center>
<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.1">
7.2.1</a>&nbsp;&nbsp;CMSRole</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSRole (SRS Requirement 3.2.2, 3.2.4) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSRole.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSRole's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Ability </td><td align="center">String </td><td align="left">The CMS permission the Role is concerned with.</td></tr>
</table>


<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.2">
7.2.2</a>&nbsp;&nbsp;User Type</h4>

<table border="1">
<tr><td colspan="3" align="center">User Type (SRS Requirement 3.2.2) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the User Type.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The User Type's human-readable identifier.</td></tr>
<tr><td align="center">Roles </td><td align="center">Role[] </td><td align="left">The abilities allotted to the User Type.</td></tr></table>


<br /><br />

<table border="1">
<tr><td colspan="2" align="center">HasRole(Role R) </td></tr>
<tr><td align="center">Input </td><td align="left">R: A Rule.</td></tr>

<tr><td align="center">Output </td><td align="left">True if the Role is found in the User Type, False otherwise.</td></tr>
<tr><td align="center">Description </td><td align="left">Way to quickly check if a User has a specific Role enabled.</td></tr></table>


<br /><br />

<table border="1">
<tr><td colspan="2" align="center">AddUser(User U) </td></tr>
<tr><td align="center">Input </td><td align="left">U: The User to have the specific User Type.</td></tr>

<tr><td align="center">Output </td><td align="left">Sets the User's User Type, makes it an entry under this User Type's table in the data layer.</td></tr>
<tr><td align="center">Description </td><td align="left">User role management.</td></tr></table>


<br /><br />

<table border="1">
<tr><td colspan="2" align="center">RemoveUser(User U) </td></tr>
<tr><td align="center">Input </td><td align="left">name: The User to lose the specific User Type.</td></tr>

<tr><td align="center">Output </td><td align="left">Removes the User from the User Type's, removes the User Type from the User.</td></tr>
<tr><td align="center">Description </td><td align="left">User role management.</td></tr></table>


<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.3">
7.2.3</a>&nbsp;&nbsp;User</h4>

<table border="1">
<tr><td colspan="3" align="center">User (SRS Requirement 3.2.3) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the User.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The user's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Type </td><td align="center">User Type </td><td align="left">The user's access/ability settings on the CMS.</td></tr></table>


<br /><br />

<table border="1">
<tr><td colspan="2" align="center">HasRole(User U) </td></tr>
<tr><td align="center">Input </td><td align="left">U: A User.</td></tr>

<tr><td align="center">Output </td><td align="left">True if the Role is found in the User, False otherwise.</td></tr>
<tr><td align="center">Description </td><td align="left">Calls User.Type.HasRole(R).</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg9">
</a>   <center>    <a href="ContentFieldClassDiagram.eps">Figure</a>
  
<center>Figure 9: A diagram outlining the relationships between Roles, Users, and User Types.</center>
<a name="fig:ContentFieldClassDiagram">
</a>
</center>
<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.4">
7.2.4</a>&nbsp;&nbsp;FieldType</h4><a name="class:fieldtype">
</a>

<table border="1">
<tr><td colspan="3" align="center">FieldType (SRS Requirement 3.3.3) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Field Type.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Field Type's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Value </td><td align="center">String </td><td align="left">The name of the Field Type's value type.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.5">
7.2.5</a>&nbsp;&nbsp;Field</h4>

<table border="1">
<tr><td colspan="3" align="center">Field (SRS Requirement 3.3.3) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Field.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Field's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Value </td><td align="center">String </td><td align="left">The name of the Field's value type.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.6">
7.2.6</a>&nbsp;&nbsp;Field Value</h4>

<table border="1">
<tr><td colspan="3" align="center">Field Value (SRS Requirement 3.3.3) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Field Value.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Field Value's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Value </td><td align="center">Object </td><td align="left">The Field Value's held data. See (<a href="#class:fieldtype">7.2.4</a>).</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.7">
7.2.7</a>&nbsp;&nbsp;Content Type</h4>

<table border="1">
<tr><td colspan="3" align="center">ContentType (SRS Requirement 3.3.1) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Content Type.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Content Type's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.8">
7.2.8</a>&nbsp;&nbsp;Content</h4>

<table border="1">
<tr><td colspan="3" align="center">Content (SRS Requirement 3.3.2) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Content.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Content's publically-visible name on the CMS.</td></tr>
<tr><td align="center">CTYPE </td><td align="center">long </td><td align="left">The Content's Content Type reference.</td></tr>
<tr><td align="center">Fields </td><td align="center">Field Value[] </td><td align="left">The Field Values associated with the Content. (SRS Requirement 3.3.2)</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">GetField(int i) </td></tr>
<tr><td align="center">Input </td><td align="left">i: An index within Content.Fields.</td></tr>

<tr><td align="center">Output </td><td align="left">The Field Value at the location in Fields; throws an exception otherwise.</td></tr>
<tr><td align="center">Description </td><td align="left">Used by the CMS when building web pages.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.9">
7.2.9</a>&nbsp;&nbsp;Display</h4>

<table border="1">
<tr><td colspan="3" align="center">Display (SRS Requirement 3.4.1, 3.4.5) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Display.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Display's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Location </td><td align="center">String </td><td align="left">The CMS-relative location of the Display on the local file system.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.10">
7.2.10</a>&nbsp;&nbsp;CMSDbDataHelper</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSDbDataHelper (SRS Requirement 3.5.5, 3.5.6) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSDbDataHelper placeholder.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSDbDataHelper's publically-visible name on the CMS.</td></tr>
<tr><td align="center">DBInfo </td><td align="center">DataTable </td><td align="left">Additional information about particular types of databases needed by DBDataLayer.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">GetHelpFor(String DBType) </td></tr>
<tr><td align="center">Input </td><td align="left">DBType: The name of a data storage apparatus.</td></tr>

<tr><td align="center">Output </td><td align="left">Void</td></tr>
<tr><td align="center">Description </td><td align="left">The DBHelper updates on DBInfo, giving it information CMSDbDataLayer uses.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.11">
7.2.11</a>&nbsp;&nbsp;CMSDbDataLayer</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSDbDataLayer (SRS Requirement 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSDbDataLayer.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSDbDataLayer's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Query </td><td align="center">String </td><td align="left">Contains the upcoming query.</td></tr>
<tr><td align="center">NotQuery </td><td align="center">bool </td><td align="left">Indicates whether the next query is a non-query (UPDATE or INSERT).</td></tr>
<tr><td align="center">Data </td><td align="center">DataTable </td><td align="left">The data retrieved from the most recent query.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">ExecuteQuery() </td></tr>
<tr><td align="center">Input </td><td align="left">Void</td></tr>

<tr><td align="center">Output </td><td align="left">CMSDbDataLayer updates Data with the results of the query.</td></tr>
<tr><td align="center">Description </td><td align="left">The query mechanism for the CMSDbDataLayer.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.12">
7.2.12</a>&nbsp;&nbsp;CMSHeader</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSHeader (SRS Requirement 3.5.5, 3.5.6) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSHeader placeholder.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSHeader's publically-visible name on the CMS.</td></tr>
<tr><td align="center">SQLString </td><td align="center">String </td><td align="left">The query used by the Data Layer to get data for the Header.</td></tr>
<tr><td align="center">Label </td><td align="center">String </td><td align="left">Text for the label portion of the Header.</td></tr>
<tr><td align="center">InternalWidth </td><td align="center">Unit </td><td align="left">Width of the Header.</td></tr>
<tr><td align="center">InternalHeight </td><td align="center">Unit </td><td align="left">Height of the Header.</td></tr>
<tr><td align="center">HasErrors </td><td align="center">bool </td><td align="left">Gets a value indicating whether this instance has errors.</td></tr>

<tr><td align="center">Errors </td><td align="center">String[] </td><td align="left">Lists any errors generated by the Header.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.13">
7.2.13</a>&nbsp;&nbsp;CMSInternationalizer</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSInternationalizer </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSInternationalizer.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSInternationalizer's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Language </td><td align="center">String </td><td align="left">The client's browser language, as detected by the CMS.</td></tr>

<tr><td align="center">CanSpeakLanguage </td><td align="center">bool </td><td align="left">Whether the CMS is capable of rendering content in the client's language.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">SetLanguage(String Language) </td></tr>
<tr><td align="center">Input </td><td align="left">Language: The ISO-639.3 3-letter representation of a language.</td></tr>

<tr><td align="center">Output </td><td align="left">Will begin outputting system dialog in the selected language, or throw an exception.</td></tr>
<tr><td align="center">Description </td><td align="left">Triggers any language transitions within the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg10">
</a>   <center>    <a href="PipelineClassDiagram.eps">Figure</a>
  
<center>Figure 10: A diagram outlining the relationship between the CMSPipeline class and the CMSLogic class.</center>
<a name="fig:PipelineClassDiagram">
</a>
</center>
<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.14">
7.2.14</a>&nbsp;&nbsp;CMSLogic</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSLogic </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSLogic.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSLogic's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Line </td><td align="center">CMSPipeline[] </td><td align="left">The chain of CMSPipelines making up the CMSLogic.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">AddPipeline(CMSPipeline P) </td></tr>
<tr><td align="center">Input </td><td align="left">P: A CMSPipeline containing business logic.</td></tr>

<tr><td align="center">Output </td><td align="left">Adds the CMSPipeline to the CMSLogic structure.</td></tr>
<tr><td align="center">Description </td><td align="left">Used to augment existing logic.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">RemovePipeline(int i) </td></tr>
<tr><td align="center">Input </td><td align="left">i: an index to a CMSPipeline.</td></tr>

<tr><td align="center">Output </td><td align="left">Removes the CMSPipeline from the CMSLogic structure.</td></tr>
<tr><td align="center">Description </td><td align="left">Used to modify existing logic.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">ExecuteLogic(DataTable datain) </td></tr>
<tr><td align="center">Input </td><td align="left">datain: Input data for the CMSPipelines.</td></tr>

<tr><td align="center">Output </td><td align="left">Returns the collective result of each CMSPipeline acting on the Pipeline.</td></tr>
<tr><td align="center">Description </td><td align="left">The main way to execute business logic.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.15">
7.2.15</a>&nbsp;&nbsp;CMSPipeline (SRS Requirement 3.2.4)</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSPipeline </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the Pipeline.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The Pipeline's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">ExecutePipeline(DataTable datain) </td></tr>
<tr><td align="center">Input </td><td align="left">datain: Input data for the CMSPipeline.</td></tr>

<tr><td align="center">Output </td><td align="left">Returns the result of this CMSPipeline acting on the DataTable.</td></tr>
<tr><td align="center">Description </td><td align="left">The main way to execute business logic.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.16">
7.2.16</a>&nbsp;&nbsp;CMSPage</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSPage </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSPage.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSPage's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.17">
7.2.17</a>&nbsp;&nbsp;CMSPageBuilder</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSPageBuilder </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSPageBuilder.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSPageBuilder's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Text </td><td align="center">String </td><td align="left">The page text loaded by the CMSPageBuilder for WYSIWYG editing.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">LoadPage(Page P) </td></tr>
<tr><td align="center">Input </td><td align="left">P: A CMSPage to be edited.</td></tr>

<tr><td align="center">Output </td><td align="left">Displays the selected Page for editing.</td></tr>
<tr><td align="center">Description </td><td align="left">Fufills (SRS Requirement 3.4.4).</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">WritePage() </td></tr>
<tr><td align="center">Input </td><td align="left">Void</td></tr>

<tr><td align="center">Output </td><td align="left">Writes the page contained in the Builder to the local filesystem.</td></tr>
<tr><td align="center">Description </td><td align="left">Fufills (SRS Requirement 3.4.4).</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<div class="p"><!----></div>
<a name="tth_fIg11">
</a>   <center>    <a href="PluginClassDiagram.eps">Figure</a>
  
<center>Figure 11: A diagram outlining the relationship between the CMSPlugin class and the CMSPluginManager class.</center>
<a name="fig:PluginClassDiagram">
</a>
</center>
<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.18">
7.2.18</a>&nbsp;&nbsp;CMSPlugin</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSPlugin (SRS Requirement 3.6.1) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSPlugin.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSPlugin's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Assembly </td><td align="center">Assembly </td><td align="left">The compiled code/binary that this Plugin points to.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.19">
7.2.19</a>&nbsp;&nbsp;CMSPluginManager</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSPlugin (SRS Requirement 3.6.1) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSPluginManager.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSPluginManager's publically-visible name on the CMS.</td></tr>
<tr><td align="center">Plugins </td><td align="center">CMSPlugin[] </td><td align="left">A list of plugins available to the CMS.</td></tr>
</table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">DeletePlugin(String name) </td></tr>
<tr><td align="center">Input </td><td align="left">name: The name of the CMSPlugin.</td></tr>

<tr><td align="center">Output </td><td align="left">Deletes the named plugin.</td></tr>
<tr><td align="center">Description </td><td align="left">Plugin management.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">RegisterPlugin(String name) </td></tr>
<tr><td align="center">Input </td><td align="left">name: The name of the CMSPlugin.</td></tr>

<tr><td align="center">Output </td><td align="left">Adds the CMSPlugin to Plugins.</td></tr>
<tr><td align="center">Description </td><td align="left">Plugin management.</td></tr></table>


<br /><br />

<div class="p"><!----></div>

<table border="1">
<tr><td colspan="2" align="center">ScanPluginDirectory() </td></tr>
<tr><td align="center">Input </td><td align="left">Void</td></tr>

<tr><td align="center">Output </td><td align="left">Adds all Plugins in the CMS' Plugin directory to the CMS, allowing them to execute.</td></tr>
<tr><td align="center">Description </td><td align="left">Plugin management.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.20">
7.2.20</a>&nbsp;&nbsp;CMSRoleBuilder</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSRoleBuilder (SRS Requirement 3.2.2, 3.2.4) </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSRoleBuilder.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSRoleBuilder's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.21">
7.2.21</a>&nbsp;&nbsp;CMSSecurityDataLayer</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSSecurityDataLayer  </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSRoleBuilder.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSRoleBuilder's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.22">
7.2.22</a>&nbsp;&nbsp;CMSStyleManager</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSStyleManager  </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSStyleManager.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSStyleManager's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.23">
7.2.23</a>&nbsp;&nbsp;CMSTheme</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSTheme  </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSTheme.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSTheme's publically-visible name on the CMS.</td></tr></table>


<br /><br />

<div class="p"><!----></div>
      <h4><a name="tth_sEc7.2.24">
7.2.24</a>&nbsp;&nbsp;CMSThemer</h4>

<table border="1">
<tr><td colspan="3" align="center">CMSThemer  </td></tr>
<tr><td align="center">Name </td><td align="center">Type </td><td align="left">Description</td></tr><tr><td></td></tr>
<tr><td align="center">ID </td><td align="center">long </td><td align="left">A unique identifier for the CMSTheme.</td></tr>
<tr><td align="center">Name </td><td align="center">String </td><td align="left">The CMSTheme's publically-visible name on the CMS.</td></tr></table>




 <h2><a name="tth_sEc8">
8</a>&nbsp;&nbsp;Glossary</h2>


<dl compact="compact">
 <dt><b>.NET Framework</b></dt>
	<dd>
.NET Framework is Microsoft's platform for building applications that utilizes a common language runtime which provides an abstraction layer over the operation system, and a large amount of class libraries.</dd>
 <dt><b>Access Control</b></dt>
	<dd>
Access Control is a system of privileges and permissions that enables an authority to control access to services and resources in an information system.</dd>
 <dt><b>Adapter</b></dt>
	<dd>A design pattern or class that translates one interface for a class into a compatible interface for another class.</dd>
 <dt><b>API</b></dt>
	<dd>
Acronym for Application Programming Interface. Serves to standardize interactions between one software program and another. In the general case, one software program implements an API, and other programs are implemented to be agnostic of this API in order to leverage features of the former.</dd>
 <dt><b>ASP.NET</b></dt>
	<dd>
ASP.NET, the next generation of Microsoft's Active Server Pages (ASP), is a web application framework that allows developers to build dynamic websites. ASP.NET is running over the .NET framework.</dd>
 <dt><b>Business Rules</b></dt>
	<dd>
Business Rules or Business Logics are the policies of business that are applied in application software to archive certain objectives.</dd>
 <dt><b>Cascading Style Sheet</b></dt>
	<dd>
Cascading Style Sheet (CSS) is a mechanism for adding style to Web documents (from <a href="http://www.w3.org/Style/CSS/"><tt>http://www.w3.org/Style/CSS/</tt></a>). CSS is primarily used to separate between the content and its representation.</dd>
 <dt><b>CMS</b></dt>
	<dd>
Acronym for Content Management System</dd>
 <dt><b>Configuration</b></dt>
	<dd>
Configuration is a set of initial settings or instructions for a computer program. In a Content Management System, configuration is usually done in the installation and may be adjusted by an administrator after the system is launched.</dd>
 <dt><b>Content Management System</b></dt>
	<dd>
A Content Management System is software that is used to manage workflow in a collaborative environment where there are a large number of users participating to contribute and share data including documents, pictures, multimedia content, etc.</dd>
 <dt><b>Content Type</b></dt>
	<dd>
In a Content Management System, the managed content can be nearly almost everything. Content Type is used to tell what certain data is about.</dd>
 <dt><b>CSS</b></dt>
	<dd>
Acronym for Cascading Style Sheet</dd>
 <dt><b>Customization</b></dt>
	<dd>
Customization is a process that allows a Content Management System to be changed and tweaked to suit business objectives without modifying the underlying software program.</dd>
 <dt><b>Data Type</b></dt>
	<dd>
A data type is a classification identifying one of various types of data (From <a href="http://en.wikipedia.org/wiki/Data_type"><tt>http://en.wikipedia.org/wiki/Data_type</tt></a>). Besides the predefined data types, a CMS should enable developers to define new data types (based on primitive data types) to satisfy certain business logics.</dd>
 <dt><b>Download</b></dt>
	<dd>
In a Content Management System, the term download is to represent the action of a user saving authorized media content to his/her personal computer.</dd>
 <dt><b>Field</b></dt>
	<dd>
A field is a piece of data which contains information about a single, primitive content. A field is identified by its name and is associated a predefined data type (number, text, picture, etc).</dd>
 <dt><b>ISO-632.3</b></dt>
	<dd>
An ISO standard that defines 3-letter codes for major languages.</dd>
 <dt><b>Password</b></dt>
	<dd>
A password is a common way to verify if a user is who (has a given username) he/she claims to be. Username and password is a pair that is used as user credentials for logging in a Content Management System.</dd>
 <dt><b>Permissions</b></dt>
	<dd>
Privileges (or permissions) control access to content.</dd>
 <dt><b>Personalization</b></dt>
	<dd>
Personalization is a process that allows individuals to customize the content to their needs.</dd>
 <dt><b>Privileges</b></dt>
	<dd>
Privileges (or permissions) control access to content.</dd>
 <dt><b>Plug-ins</b></dt>
	<dd>
A plug-in is a function or service that extends the current functionality of the content management system. Plug-ins are usually created by external developers through a known application programming interface (API) provided by the CMS.</dd>
 <dt><b>Role</b></dt>
	<dd>
A role involves a set of predefined privileges and permissions. Some common roles in a Content Management System include Administrator, Manager, Contributor, Reader, etc.</dd>
 <dt><b>Table</b></dt>
	<dd>
A set of data elements (values) that is organized using a model of vertical columns (which are identified by their name) and horizontal rows.</dd>
 <dt><b>Template</b></dt>
	<dd>
Template is a technique that is used to separate content from its presentation. A template defines how data or a structure of data is displayed.</dd>
 <dt><b>Theme</b></dt>
	<dd>
A theme is a set of templates, styling and related graphic content that follows a certain subject.</dd>
 <dt><b>Upload</b></dt>
	<dd>
In a Content Management System, the term upload is to represent the action of a user putting his/her personal media data to the server for sharing purposes.</dd>
 <dt><b>Username</b></dt>
	<dd>
Any individual who uses a Content Management System is identified by a unique username. Usernames also provide a mnemonic way to recognize different users instead of their underlying unique identifier numbers (IDs).</dd>
 <dt><b>WYSIWYG Editor</b></dt>
	<dd>
WYSIWYG is an acronym for What You See Is What You Get.  A WYSIWYG editor provides user a visual way to compose his/her document.</dd>
</dl>


<div class="p"><!----></div>

<br /><br /><hr /><small>File translated from
T<sub><font size="-1">E</font></sub>X
by <a href="http://hutchinson.belmont.ma.us/tth/">
T<sub><font size="-1">T</font></sub>Hgold</a>,
version 4.00.<br />On 05 Feb 2011, 01:09.</small>
</html>
